package com.gome.axwl.aoc.facade;


import java.util.List;

import com.anxl.sso.client.api.Account;
import com.gome.axwl.aoc.entity.dto.PageResultDto;
import com.gome.axwl.aoc.entity.dto.carrierSettle.CsApplyInfoDto;
import com.gome.axwl.aoc.entity.dto.carrierSettle.CsApplyInfoForListDto;
import com.gome.axwl.aoc.entity.dto.carrierSettle.CsApplyInfoForListParamDto;
import com.gome.axwl.aoc.entity.dto.carrierSettle.CsApprovalParamDto;
import com.gome.axwl.aoc.entity.po.CsApplyInfoPo;
import com.gome.commons.core.ResultData;

import java.util.List;

/**
 * 服务商入驻
 * @author chenjunjie13@gome.com.cn
 * @since 2018-07-16
 */
public interface CarrierSettleFacade {
    /**
     * 根据订单申请号查询申请详情
     * @param applyInfoId
     * @author yinyuxin@gome.com.cn
     * @return
     */
    ResultData<CsApplyInfoDto> getApprovalDetailById(Integer applyInfoId);

    /**
     * 新增服务商入驻申请单(保存为草稿，没有启动审批)
     * @param csApplyInfoDto
     * @author yinyuxin@gome.com.cn
     * @return
     */
    ResultData<Integer> createSettleApplyInfo(CsApplyInfoDto csApplyInfoDto);

    /**
     * 提交服务商入驻申请单（修改+单子状态改为待运营审核）
     * @param csApplyInfoDto
     * @author yinyuxin@gome.com.cn
     * @return
     */
    ResultData<Integer> commitSettleApplyInfo(CsApplyInfoDto csApplyInfoDto);

    /**
     * 审批入驻申请单
     * @param csApprovalParamDto
     * @author yinyuxin@gome.com.cn
     * @return
     */
    ResultData<Void> approvalApplyInfo(CsApprovalParamDto csApprovalParamDto);

    /**
     * 查询审批列表
     * @param csApplyInfoForListParamDto
     * @author yinyuxin@gome.com.cn
     * @return
     */
    ResultData<PageResultDto<CsApplyInfoForListDto>> queryCsApplyInfoList(CsApplyInfoForListParamDto csApplyInfoForListParamDto);

    /**
     * 查询服务商名称
     * @param settleName
     * @return
     */
    ResultData<List<String>> querySettleName(String settleName);


    /**
     * 审核人转移
     * @param applyInfoId
     * @param destinationNo
     * @return
     */
    ResultData<Void> transferApplyUser(Integer applyInfoId,  String operationUserNo,String destinationNo);


    /**
     * 查询申请单草稿
     * @param csPhone
     * @return
     */
   ResultData<CsApplyInfoDto> queryApplyDraft(String csPhone);

    /**
     * 根据服务商账号查询清单
     * @param csPhone
     * @return
     */
   ResultData<PageResultDto<CsApplyInfoDto>> queryApplyListByCsphone(String csPhone,Integer pageNum,Integer pageSize);

    /**
     * 获取用户的审批权限（传给前端控制按钮用，不用于审批列表的筛选）
     * @param userNo
     * @return
     */
   ResultData<String> getUsersApprovallevel(String userNo);



    List<CsApplyInfoPo> queryByIds(List<Integer> ids);


    /**
     * 提醒运营审核单子
     * @return
     */
    ResultData<Void> remindBusinessApproval();

    /**
     * 邀请人查询
     *邀请人查询
     * @param parm
     * @return
     */
    ResultData<List<Account>> findInviter(String parm);
}
